/*******************************************************************/
/* @ All Rights Reserved Copyright (C) 2014 broada,Co.,Ltd.        */
/*                                                                 */
/*  NAME      = frmodule_mng.h                                     */
/*  NOTE      = 模块管理                                           */
/*  DATE      = 2014/10/29                                         */
/*******************************************************************/

#ifndef __FRMODULE_MNG_H_
#define __FRMODULE_MNG_H_

#include "module.h"

typedef struct __st_mng_module {
    int i_is_stub;              /* FR_YES:stub 模块;FR_NO:真实模块 */
    int i_is_autocheck;         /* FR_YES:协议自动判定时使用;FR_NO:协议自动判定时不使用 */
    
    L7_module *p_st_l7_module;    /* 协议分析库的模块信息 */
    
    //char  *p_so_name;               /* 类库名称 */
    //void  *p_so_handle;             /* 库函数加载句柄 */
} Frmodule_mng;

int  frmodule_mng_init(void);
void frmodule_mng_destory(void);

int frmodule_register_path(const char *p_module_file);
int frmodule_unregister_path(const char *p_module_file, int i_l7_proto);

void frmodule_mng_output(char **pp_result);

int frmodule_get_chklist(int i_ip_proto, Frlist_header *p_lst_hdr, int i_is_autocheck);
Frmodule_mng *frmodule_get_module(int i_l7_proto);

L7_module *frmodule_get_l7module(int i_l7_proto);
void frmodule_put_l7module(L7_module *p_st_l7_module);

void frmodule_mng_list_node_mng_show(Frlist_node* p_st_node, char *p_outbuff, unsigned int ui_buff_size);
void frmodule_unregister_all(void);

#endif
